package com.polymer.app.solution;

import java.util.HashMap;

import javax.swing.JPasswordField;

import org.junit.Test;

public class UnitTest {

    //一口一个小
    /**题目:
                    对于一个字符串，请设计一个高效算法，找到第一次重复出现的字符。
                    给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符，字符串的长度小于等于500。
                    测试样例：
            "qywyqer23tdd",11
                    返回：y 
     * */
    @Test
    public void strSerch() {
        String A="qywyqer23tdd";
        System.out.println(sSerch(A));
    }
    
    private Character sSerch(String A) {
        HashMap<Character, Integer> map=new HashMap<Character, Integer>();
        for (int i = 0; i < A.length()-1; i++) {
            if(map.get(A.charAt(i))!=null) {
                return A.charAt(i);
            }
            map.put(A.charAt(i), 1);
        }
        return null;
    }
    
    /**
             为什么你应该使用char[]存储密码而不是String？
        1)由于字符串在 Java 中是不可变的，如果你将密码存储为纯文本，它将在内存中可用，直到垃圾收集器清除它. 并且为了可重用性，会存在 String 在字符串池中, 
                            它很可能会保留在内存中持续很长时间，从而构成安全威胁。
        2)Java 本身建议使用 JPasswordField 的 getPassword() 方法，该方法返回一个 char[] 和不推荐使用的getTex() 方法，该方法以明文形式返回密码，
                            由于安全原因。应遵循 Java 团队的建议, 坚持标准而不是反对它。
        3)使用 String 时，总是存在在日志文件或控制台中打印纯文本的风险，但如果使用 Array，则不会打印数组的内容而是打印其内存位置。虽然不是一个真正的原因，但仍然有道理
     */
    @Test
    public void testJPasswordField() {
        JPasswordField jpw=new JPasswordField("123123");
        char[] password = jpw.getPassword();
        for (int i = 0; i < password.length; i++) {
            System.out.println(password[i]);
        }
        System.out.println(password.toString());
    }
    
    @Test
    public void testStr() {
        String str="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjlKlGznCiZtBQKudjMpkvk9Bh0QB8v4a9hyjWankf3WnHnY9s21NGz/459ln5RDswlHH5E6iasGj8sweNLK0VYSqf2ofPiq77GLzzzCQQS3lTxA5SKgI14e72kkfIqbc/rKR38wmuvt+Rff20w+oWI0BJCrkTo0oCxUmHV8wDBc0YHjE8de7bhSOh5uxa8Fqp4Q6imjz7P3XcQNCpBeg8+CNpAmabsnUgr2GXdSU62/HZGgJ7YdRxkoFuNd/Hk+IUmJeOPgQEC3IsnOENSPez/FURkWmB4Us63pJod4pzRCqAk0INDTb6I7GFX1fb9VWjJFMkGyVhPktpeyQ9IEeYwIDAQAB";
        
        System.out.println(str.length());
    }
}
